package com.briup.smartcity_group1.service;

import com.briup.smartcity_group1.bean.basic.BaseConfig;
import com.github.pagehelper.PageInfo;
import com.briup.smartcity_group1.exception.ServiceException;

import java.util.List;


/**
* 基础配置相关接口
*/
public interface IBaseConfigService {
    /**
     * 保存配置信息
     *
     * @param baseConfig 待保存的配置类对象
     */
    void saveConfig(BaseConfig baseConfig);

    /**
     * 更新配置信息
     *
     * @param baseConfig 待更新的配置类对象
     */
    void updateConfig(BaseConfig baseConfig);

    /**
     * 改变配置信息的状态
     *
     * @param id        配置信息的id
     * @param status    配置信息信息的状态
     * @throws ServiceException 不可同时禁用所有配置信息
     */
    void changeConfigStatus(int id,int status);

    /**
     * 根据id删除删除配置信息
     *
     * @param id 要删除的配置信息的id
     * @throws ServiceException 不可删除,至少保留一则配置信息;
     *                          不可删除开启状态的配置信息
     */
    void deleteById(int id);

    /**
     * 分页询所有配置信息
     *
     * @param pageNum   页码
     * @param pageSize  页面大小
     * @return 分页查询的结果集,装有对应页的配置信息对象
     */
    PageInfo<BaseConfig> findAllWithPage(int pageNum, int pageSize);

    /**
     * 查找当前启用的配置信息
     *
     * @return 当前启用的配置信息对象
     */
    BaseConfig currentConfigYes();
}
